package com.bjsxt;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

/**iterator 迭代器接口介绍
 * Collection接口继承了iterator接口，所有实现了Collection接口的容器类对
 * 该方法做了具体实现，iterator的抽象方法返回一个iterator接口类型的迭代器
 * 对象，在该对象中包含了三个方法用于实现对单例容器的迭代处理
 * 作用：对不同类型的容器，采用相同的方式遍历*/
/*方法：
* boolean hasNext()  判断游标当前位置是否有元素，如果有返回true,否则false
* Object next()      获取当前游标所在位置的元素，并将游标移到下一位置
* void  remove()    删除游标当前位置的元 素，在执行完next后该操作只能执行一次（因为删除后该索引元素没有了） */
public class IteratorTest {
    public static void main(String[] args) {
        //实例化容器
       // List<String> list1 = new Vector<>();  vector和arraylist都可以用
        List<String> list = new ArrayList<>();
        //添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        //获取元素
        // 获取迭代器   迭代器类型是Iterator
        Iterator<String> iterator = list.iterator();
       /* boolean flag = iterator.hasNext();
        if(flag){
            String value = iterator.next();
            System.out.println(value);//这样只显示一个元素，不可以显示全部
        }*/
        //方式一：在迭代器中，通过while循环获取元素
        while (iterator.hasNext()){  //iterator.hasNext()==true
            String val1 = iterator.next();
            System.out.println(val1);
        }
        System.out.println("----------");
        //方式二：在迭代器中，通过for循环获取元素
        for(Iterator<String> it = list.iterator();it.hasNext();) {
                 String val2 = it.next();
            System.out.println(val2);
        }
    }
}
